library verilog;
use verilog.vl_types.all;
entity pmi_dsp_preadd_slice is
    generic(
        pmi_data_m0a_width: integer := 18;
        pmi_data_m0b_width: integer := 18;
        pmi_data_m1a_width: integer := 18;
        pmi_data_m1b_width: integer := 18;
        pmi_data_m0c_width: integer := 18;
        pmi_data_m1c_width: integer := 18;
        pmi_gsr         : string  := "enable";
        pmi_family      : string  := "ECP4";
        pmi_reg_input_m0a_pre_clk: string  := "CLK0";
        pmi_reg_input_m0a_pre_ce: string  := "CE0";
        pmi_reg_input_m0a_pre_rst: string  := "RST0";
        pmi_reg_input_m0b_pre_clk: string  := "CLK0";
        pmi_reg_input_m0b_pre_ce: string  := "CE0";
        pmi_reg_input_m0b_pre_rst: string  := "RST0";
        pmi_reg_input_m0a_mult_clk: string  := "CLK0";
        pmi_reg_input_m0a_mult_ce: string  := "CE0";
        pmi_reg_input_m0a_mult_rst: string  := "RST0";
        pmi_reg_input_m0b_mult_clk: string  := "CLK0";
        pmi_reg_input_m0b_mult_ce: string  := "CE0";
        pmi_reg_input_m0b_mult_rst: string  := "RST0";
        pmi_reg_input_m1a_pre_clk: string  := "CLK0";
        pmi_reg_input_m1a_pre_ce: string  := "CE0";
        pmi_reg_input_m1a_pre_rst: string  := "RST0";
        pmi_reg_input_m1b_pre_clk: string  := "CLK0";
        pmi_reg_input_m1b_pre_ce: string  := "CE0";
        pmi_reg_input_m1b_pre_rst: string  := "RST0";
        pmi_reg_input_m1a_mult_clk: string  := "CLK0";
        pmi_reg_input_m1a_mult_ce: string  := "CE0";
        pmi_reg_input_m1a_mult_rst: string  := "RST0";
        pmi_reg_input_m1b_mult_clk: string  := "CLK0";
        pmi_reg_input_m1b_mult_ce: string  := "CE0";
        pmi_reg_input_m1b_mult_rst: string  := "RST0";
        pmi_reg_input_m0c_clk: string  := "CLK0";
        pmi_reg_input_m0c_ce: string  := "CE0";
        pmi_reg_input_m0c_rst: string  := "RST0";
        pmi_reg_input_m1c_clk: string  := "CLK0";
        pmi_reg_input_m1c_ce: string  := "CE0";
        pmi_reg_input_m1c_rst: string  := "RST0";
        pmi_reg_input_cfb_clk: string  := "CLK0";
        pmi_reg_input_cfb_ce: string  := "CE0";
        pmi_reg_input_cfb_rst: string  := "RST0";
        pmi_reg_pipeline0_clk: string  := "CLK0";
        pmi_reg_pipeline0_ce: string  := "CE0";
        pmi_reg_pipeline0_rst: string  := "RST0";
        pmi_reg_pipeline1_clk: string  := "CLK0";
        pmi_reg_pipeline1_ce: string  := "CE0";
        pmi_reg_pipeline1_rst: string  := "RST0";
        pmi_reg_output_clk: string  := "CLK0";
        pmi_reg_output_ce: string  := "CE0";
        pmi_reg_output_rst: string  := "RST0";
        pmi_reg_oppre0_clk: string  := "CLK0";
        pmi_reg_oppre0_ce: string  := "CE0";
        pmi_reg_oppre0_rst: string  := "RST0";
        pmi_reg_oppre1_clk: string  := "CLK0";
        pmi_reg_oppre1_ce: string  := "CE0";
        pmi_reg_oppre1_rst: string  := "RST0";
        pmi_reg_opcodein0_clk: string  := "CLK0";
        pmi_reg_opcodein0_ce: string  := "CE0";
        pmi_reg_opcodein0_rst: string  := "RST0";
        pmi_reg_opcodein1_clk: string  := "CLK0";
        pmi_reg_opcodein1_ce: string  := "CE0";
        pmi_reg_opcodein1_rst: string  := "RST0";
        pmi_cascade_match_reg: string  := "off";
        pmi_m0_sourceb_mode: string  := "B";
        pmi_m1_sourceb_mode: string  := "B";
        pmi_m0_sourcea_mode: string  := "OPA0";
        pmi_m1_sourcea_mode: string  := "OPA1";
        pmi_pre0_sourcea_mode: string  := "A_SHIFT";
        pmi_pre0_sourceb_mode: string  := "SHIFT";
        pmi_pre0_symmetry_mode: string  := "DIRECT";
        pmi_pre1_sourcea_mode: string  := "A_SHIFT";
        pmi_pre1_sourceb_mode: string  := "SHIFT";
        pmi_pre1_fb_mux : string  := "SHIFT";
        pmi_pre1_symmetry_mode: string  := "DIRECT";
        pmi_highspeed_clk: string  := "NONE";
        pmi_clk0_div    : string  := "ENABLED";
        pmi_clk1_div    : string  := "ENABLED";
        pmi_clk2_div    : string  := "ENABLED";
        pmi_clk3_div    : string  := "ENABLED";
        module_type     : string  := "pmi_dsp_preadd_slice"
    );
    port(
        M0A             : in     vl_logic_vector;
        M0B             : in     vl_logic_vector;
        M1A             : in     vl_logic_vector;
        M1B             : in     vl_logic_vector;
        M0C             : in     vl_logic_vector;
        M1C             : in     vl_logic_vector;
        SIGNM0A         : in     vl_logic;
        SIGNM0B         : in     vl_logic;
        SIGNM1A         : in     vl_logic;
        SIGNM1B         : in     vl_logic;
        SOURCEM0A       : in     vl_logic;
        SOURCEM1A       : in     vl_logic;
        CFB             : in     vl_logic_vector(53 downto 0);
        CIN             : in     vl_logic_vector(53 downto 0);
        SIGNCIN         : in     vl_logic;
        SRIA            : in     vl_logic_vector(17 downto 0);
        SRIB            : in     vl_logic_vector(17 downto 0);
        AMUXSEL         : in     vl_logic_vector(1 downto 0);
        BMUXSEL         : in     vl_logic_vector(1 downto 0);
        CMUXSEL         : in     vl_logic_vector(2 downto 0);
        OPPRE           : in     vl_logic_vector(1 downto 0);
        OP              : in     vl_logic_vector(3 downto 0);
        CLK             : in     vl_logic_vector(3 downto 0);
        CE              : in     vl_logic_vector(3 downto 0);
        RST             : in     vl_logic_vector(3 downto 0);
        R               : out    vl_logic_vector(53 downto 0);
        CO              : out    vl_logic_vector(53 downto 0);
        SIGNR           : out    vl_logic;
        SROA            : out    vl_logic_vector(17 downto 0);
        SROB            : out    vl_logic_vector(17 downto 0)
    );
    attribute mti_svvh_generic_type : integer;
    attribute mti_svvh_generic_type of pmi_data_m0a_width : constant is 1;
    attribute mti_svvh_generic_type of pmi_data_m0b_width : constant is 1;
    attribute mti_svvh_generic_type of pmi_data_m1a_width : constant is 1;
    attribute mti_svvh_generic_type of pmi_data_m1b_width : constant is 1;
    attribute mti_svvh_generic_type of pmi_data_m0c_width : constant is 1;
    attribute mti_svvh_generic_type of pmi_data_m1c_width : constant is 1;
    attribute mti_svvh_generic_type of pmi_gsr : constant is 1;
    attribute mti_svvh_generic_type of pmi_family : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0a_pre_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0a_pre_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0a_pre_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0b_pre_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0b_pre_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0b_pre_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0a_mult_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0a_mult_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0a_mult_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0b_mult_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0b_mult_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0b_mult_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1a_pre_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1a_pre_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1a_pre_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1b_pre_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1b_pre_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1b_pre_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1a_mult_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1a_mult_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1a_mult_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1b_mult_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1b_mult_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1b_mult_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0c_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0c_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m0c_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1c_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1c_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_m1c_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_cfb_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_cfb_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_input_cfb_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_pipeline0_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_pipeline0_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_pipeline0_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_pipeline1_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_pipeline1_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_pipeline1_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_output_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_output_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_output_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_oppre0_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_oppre0_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_oppre0_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_oppre1_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_oppre1_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_oppre1_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_opcodein0_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_opcodein0_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_opcodein0_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_opcodein1_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_opcodein1_ce : constant is 1;
    attribute mti_svvh_generic_type of pmi_reg_opcodein1_rst : constant is 1;
    attribute mti_svvh_generic_type of pmi_cascade_match_reg : constant is 1;
    attribute mti_svvh_generic_type of pmi_m0_sourceb_mode : constant is 1;
    attribute mti_svvh_generic_type of pmi_m1_sourceb_mode : constant is 1;
    attribute mti_svvh_generic_type of pmi_m0_sourcea_mode : constant is 1;
    attribute mti_svvh_generic_type of pmi_m1_sourcea_mode : constant is 1;
    attribute mti_svvh_generic_type of pmi_pre0_sourcea_mode : constant is 1;
    attribute mti_svvh_generic_type of pmi_pre0_sourceb_mode : constant is 1;
    attribute mti_svvh_generic_type of pmi_pre0_symmetry_mode : constant is 1;
    attribute mti_svvh_generic_type of pmi_pre1_sourcea_mode : constant is 1;
    attribute mti_svvh_generic_type of pmi_pre1_sourceb_mode : constant is 1;
    attribute mti_svvh_generic_type of pmi_pre1_fb_mux : constant is 1;
    attribute mti_svvh_generic_type of pmi_pre1_symmetry_mode : constant is 1;
    attribute mti_svvh_generic_type of pmi_highspeed_clk : constant is 1;
    attribute mti_svvh_generic_type of pmi_clk0_div : constant is 1;
    attribute mti_svvh_generic_type of pmi_clk1_div : constant is 1;
    attribute mti_svvh_generic_type of pmi_clk2_div : constant is 1;
    attribute mti_svvh_generic_type of pmi_clk3_div : constant is 1;
    attribute mti_svvh_generic_type of module_type : constant is 1;
end pmi_dsp_preadd_slice;
